package com.mall.mymall.dao.dto;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

@Data
public class QueryDto<T> {
    private List<T> records; // 查询结果记录
    private Integer total;   // 总记录数

    // 默认构造方法
    public QueryDto() {
    }

    // 静态方法：快速初始化 QueryDto
    public static <T> QueryDto<T> of(List<T> records, Integer total) {
        QueryDto<T> queryDto = new QueryDto<>();
        queryDto.setRecords(records);
        queryDto.setTotal(total);
        return queryDto;
    }

    // 静态方法：快速初始化 QueryDto（处理 null 情况）
    public static <T> QueryDto<T> ofNullable(List<T> records, Integer total) {
        if (records == null) {
            records = List.of(); // 如果 records 为 null，使用空列表
        }
        if (total == null) {
            total = 0; // 如果 total 为 null，设置为 0
        }
        return QueryDto.of(records, total);
    }

    // 静态方法：快速初始化 QueryDto（仅 records，total 默认为 0）
    public static <T> QueryDto<T> ofRecords(List<T> records) {
        return QueryDto.of(records, 0);
    }

    // 静态方法：快速初始化 QueryDto（仅 total，records 默认为空列表）
    public static <T> QueryDto<T> ofTotal(Integer total) {
        return QueryDto.of(List.of(), total);
    }
}